package com.mycode.simplefactory02.resolve;

// 图标工厂类：工厂类

/**
 * 工厂类：使得对象的创建和使用分离，令系统更加符合单一职责原则，有利于功能的复用和系统的维护，
 *        而且对象的创建和使用分离还可以防止用来实例化一个类的数据和代码在多个类中出现，可以将有关创建的搬移到一个工厂类中，因为创建
 *        一个对象往往不只是简单调用其构造函数，还需要设置一些参数，可能还需要配置环境，如果将这些代码散落在每一个创建对象的客户类中，
 *        势必会出现代码重复、创建蔓延的问题，而这些客户类其实无需承担对象的创建工作，只需要使用已创建好的对象就可以了
 *
 */
public class ChartFactory {

    // 静态工厂方式
    public static Chart getChart(String type) {
        Chart chart = null;
        if (type.equalsIgnoreCase("histogram")) {
            chart = new HistogramChart();
            System.out.println("初始化设置柱状图");
        }
        else if (type.equalsIgnoreCase("pie")) {
            chart = new PieChart();
            System.out.println("初始化设置饼状图");
        }
        else if (type.equalsIgnoreCase("line")) {
            chart = new LineChart();
            System.out.println("初始化设置折线图");
        }
        return chart;
    }
}
